"""
@author: tk
@file: shopping.py
@time: 2022/11/4 21:04
"""
from random import choice
import string
import subprocess
import random

####################--------------------------------题目------------------------------------##################
# 写一个三乐购物系统
# 欢迎提示语
# 1、登录
# 1、查看商品列表（种类,价钱）
# 2、注册  -- 文件   用户名，密码，账号余额
####################--------------------------------函数------------------------------------###################
def retu():
    numb = input("请输入正确的选择:")
    if numb == 'q':
        ret1()
    else:
        retu()


def ret1():
    print("系统目前只提供查看商品种类以及价位\n"
          "商品类型如下\n"
          "1.食品类\n"
          "2.电子类\n"
          "3.退出系统")
    ret2()


def ret2():
    numb = input("请输入您的选择:")
    if numb == '1':
        print("1.香蕉:20元\n"
              "2.香蕉:30元\n"
              "3.香蕉:40元\n"
              "4.香蕉:50元\n"
              "q.返回")
        retu()
    elif numb == '2':
        print("1.电脑:20元\n"
              "2.电脑:30元\n"
              "3.电脑:40元\n"
              "4.电脑:50元\n"
              "q.返回")
        retu()
    elif numb == '3':
        exit()
    else:
        retu()




def one(num):
    while num == '1' or num == '2' or num == '3':
        if num == '1':
            username1 = input('请输入您的用户名：').strip().lower()  # 去除空格或换行符，输入的字母全部转为小写
            passwd1 = input("请输入您的密码:")

            fr = open('usermessage')
            res = fr.read()
            fr.close()

            user_list = res.split()

            num = 0
            message = {}
            for i in user_list:
                if num % 2 == 0:
                    username2 = i
                    num += 1
                else:
                    passwd2 = i
                    num += 1
                    message[username2] = passwd2

            if username1 not in message:
                print('账号不存在，请先注册！')
                exit()
            else:
                if message.get(username1) == passwd1:
                    print(f"登录成功,欢迎用户:{username1}光临三乐购物系统")
                    ret1()
                else:
                    print("用户密码错误")
                    break
        elif num == '2':

            def adduser():
                while True:  # 循环为了防止输出已有用户名
                    user_name = input('请输入要创建的用户名:')
                    rc = subprocess.run('id %s &> /dev/null' % user_name, shell=True)  # 首先查看是否已有ID
                    if rc.returncode == 0:
                        print('用户名已存在!')  # 有的话就返回通知用户
                    else:
                        subprocess.run("useradd %s &> /dev/null" % user_name, shell=True)
                        subprocess.run('echo %s | passwd --stdin %s &> /dev/null' % (pa, user_name), shell=True)
                        break  # 创建用户并生成密码,退出循环
                return user_name

            def password():
                result = input("请设置您的密码:")
                return result

            pa = password()  # 定义密码为字符串

            def wfile(username, password, fname):  # 用户名密码写入文件
                with open(fname, 'a') as f:  # 打开文件,赋予追加权限
                    data = username + '\t' + password + '\n'
                    f.write(data)

            if __name__ == '__main__':
                uname = adduser()
                pword = pa
                wfile(uname, pword, './usermessage')
                mon = str(random.randint(1, 10000)) + " "
                f = open("usermon", "a")
                f.write(mon)
                f.close()
                print('用户名:' + uname + '\n' '密码:' + pword)  # 写入文件并将用户名和密码输出给用户查看
                print("用户创建成功,请重新登录!")
            break

        ###账户余额在usermon文件,用户账号和密码信息在usermessage里

        elif num == '3':
            exit()
        else:
            print("您输入的内容不正确,请重新输入")
            break

####################--------------------------------正文体------------------------------------###################

print("欢迎光临三乐购物系统,请您在以下操作中做出选择\n"
      "1.登录\n"
      "2.注册\n"
      "3.退出")
num = input("请在冒号后输入操作所对应的数字:")
while num != '1' and num != '2' and num != '3':
    num = input("您输入的操作数不对,请在冒号后输入正确的操作数:")

one(num)